package com.dys.designpattern.singleton.applicationscenarios;

/**
 * @author 田建松
 * @version V1.0.0
 * @description 序列号生成器
 * @date 2024/5/10
 * @since 1.0
 */
public class SerialGenerator {

    private long code;

    /**
     * 2.类内部自行实例化，并用静态常量保存(也可延迟实例化)。
     */
    private static final SerialGenerator INSTANCE = new SerialGenerator();

    /**
     * 1.私有化构造器，防止其他类通过new关键字创建实例。
     */
    private SerialGenerator() {
    }

    public synchronized long next() {
        return ++code;
    }

    /**
     * 3.提供一个公开的静态方法来访问这个实例。
     *
     * @return 内部实例
     */
    public static SerialGenerator getInstance() {
        return INSTANCE;
    }
}
